package com.sunshine.homepage.service;

import sunshine.commcon.util.entity.Result;

public interface InventoryService {
    
    /**
     * 检查商品库存是否充足
     * @param productId 商品ID
     * @param quantity 需要的数量
     * @return 检查结果
     */
    Result<Boolean> checkStock(Long productId, Integer quantity);
    
    /**
     * 预扣减库存（在创建订单时使用）
     * @param productId 商品ID
     * @param quantity 扣减数量
     * @return 扣减结果
     */
    Result<Boolean> deductStock(Long productId, Integer quantity);
    
    /**
     * 确认扣减库存（在支付成功后使用）
     * @param productId 商品ID
     * @param quantity 扣减数量
     * @return 扣减结果
     */
    Result<Boolean> confirmDeductStock(Long productId, Integer quantity);
    
    /**
     * 释放预扣减的库存（在订单取消或超时后使用）
     * @param productId 商品ID
     * @param quantity 释放数量
     * @return 释放结果
     */
    Result<Boolean> releaseStock(Long productId, Integer quantity);
    
    /**
     * 同步数据库库存到Redis
     * @param productId 商品ID
     * @return 同步结果
     */
    Result<Boolean> syncStockToRedis(Long productId);
}